On Observational Equivalence and Compiler Correctness
نویسندگان
چکیده
We study the problem of giving proofs of compiler correctness in the framework of observational equivalence 16] and correspondences 17]. The starting point for correctness is a formal semantics of the programming language given in a form of Structural Operational Semantics 15] wich we call Relational Semantics 4, Chapter 2]. We start by introducing Relational Semantics. We then deene an equivalence relation between Relational Semantics based on the notion of observational equivalence 16], and extend the proof method of correspondences 17] to a proof method for observational equivalence of Relational Semantics, which we call Model Correspondence. Finally, we use observational equivalence to establish the equivalence between a (standard) semantics of the programming language and another semantics deened using a compilation of the language into some machine code. This notion of equivalence deenes a criterion for compiler correctness and we shall argue why this is a suitable criterion.
منابع مشابه
Compilation and Equivalence of Imperative Objects
We adopt the untyped imperative object calculus of Abadi and Cardelli as a minimal setting in which to study problems of compilation and program equivalence that arise when compiling objectoriented languages. We present both a big-step and a small-step substitution-based operational semantics for the calculus. Our first two results are theorems asserting the equivalence of our substitutionbased...
متن کاملVerifying an Open Compiler Using Multi-language Semantics
Existing verified compilers are proved correct under a closed-world assumption, i.e., that the compiler will only be used to compile whole programs. We present a new methodology for verifying correct compilation of program components, while formally allowing linking with target code of arbitrary provenance. To demonstrate our methodology, we present a two-pass type-preserving open compiler and ...
متن کاملDeclarative Semantics for Functional Languages
We present a semantics for an applied call-by-value lambda-calculus that is compositional, extensional, and elementary. We present four different views of the semantics: 1) as a relational (big-step) semantics that is not operational but instead declarative, 2) as a denotational semantics that does not use domain theory, 3) as a non-deterministic interpreter, and 4) as a variant of the intersec...
متن کاملRevisiting Elementary Denotational Semantics
We present a semantics for an applied call-by-value λ-calculus that is compositional, extensional, and elementary. We present four dierent views of the semantics: 1) as a relational (big-step) semantics that is not operational but instead declarative, 2) as a denotational semantics that does not use domain theory, 3) as a non-deterministic interpreter, and 4) as a variant of the intersection t...
متن کاملType-Preserving Flow Analysis and Interprocedural Unboxing (Extended Version)
Interprocedural flow analysis can be used to eliminate otherwise unnecessary heap allocated objects (unboxing), and in previous work we have shown how to do so while maintaining correctness with respect to the garbage collector. In this paper, we extend the notion of flow analysis to incorporate types, enabling analysis and optimization of typed programs. We apply this typed analysis to specify...
متن کامل